class ArticleUtil {
    public postType(postType: any) {
        if (postType === 'post') document.body.classList.add('post-single')
        else if (postType === 'video') document.body.classList.add('single-format-video')
        else if (postType === 'image') document.body.classList.add('single-format-gallery')
    }

    public RemovePostBodyClassList() {
        if (document.body.classList.contains('post-single')) {
            document.body.classList.remove('post-single')
        } else if (document.body.classList.contains('single-format-video')) {
            document.body.classList.remove('single-format-video')
        } else if (document.body.classList.contains('single-format-gallery')) {
            document.body.classList.remove('single-format-gallery')
        }
    }

    public createToc() {
        const postContent = document.querySelector('.post .entry-content');
        if (postContent == null) return;
        const titles: any = postContent.querySelectorAll('h1,h2,h3,h4,h5,h6');
        // 没有 toc 目录，则直接移除
        if (titles.length === 0 || !titles) {
            const cardToc = document.querySelector(".table-of-content");
            cardToc?.remove();
        } else {
            // 获取所有标题元素
            let headings = document.querySelectorAll('.post .entry-content *:is(h1, h2, h3, h4, h5, h6)');
            // 创建一个空的目录列表
            let tocList = document.createElement('ul');
            tocList.classList.add('no-scrollbar');
            // 保存每个级别的父列表项
            let parentItems: any = {};
            // 遍历每个标题元素
            headings.forEach(function (heading) {
                //设置目录元素的id属性
                heading.setAttribute('id', heading.innerHTML)
                // 创建列表项
                let listItem = document.createElement('li');
                listItem.classList.add('heading-level');
                // 创建标题链接
                let link = document.createElement('a');
                // 直接设置链接的href为标题元素的id
                link.href = '#' + encodeURIComponent(heading.id);
                link.classList.add('toc-link', 'node-name--' + heading.tagName);
                // @ts-ignore
                link.textContent = heading.textContent.trim();
                // 将标题链接添加到列表项中
                listItem.appendChild(link);
                // 获取当前标题级别
                let level = parseInt(heading.tagName.slice(1));
                // 查找当前标题的父级列表项
                let parentItem = parentItems[level - 1];
                // 如果存在父级列表项，则将当前列表项作为其子项
                if (parentItem) {
                    // 如果父级列表项还没有子列表，则创建一个子列表
                    if (!parentItem.querySelector('ul')) {
                        let subList = document.createElement('ul');
                        subList.classList.add('no-scrollbar', 'is-collapsible');
                        parentItem.appendChild(subList);
                    }
                    // 将当前列表项添加到父级列表的子列表中
                    parentItem.querySelector('ul').appendChild(listItem);
                } else {
                    // 如果不存在父级列表项，则将当前列表项直接添加到根列表中
                    tocList.appendChild(listItem);
                }
                // 更新当前级别的父列表项为当前列表项
                parentItems[level] = listItem;
            });
            // 插入toc标题
            const h6 = document.createElement('h6');
            let toc: any = document.querySelector('.table-of-content')
            if (toc == undefined) {
                const nav = document.createElement('nav')
                nav.setAttribute('class', 'table-of-content')
                postContent.insertBefore(nav, postContent.firstChild)
            }
            let tocCreate: any = document.querySelector('.table-of-content')
            tocCreate.insertBefore(h6, tocCreate.firstChild);
            h6.innerHTML = '文章目录'
            tocCreate.appendChild(tocList);
        }
    }
}

export const articleUtil: ArticleUtil = new ArticleUtil()
